package com.anyou.mall.dri.service;

import com.anyou.common.core.domain.ApiResult;
import com.anyou.mall.dri.domain.Driver;
import com.anyou.mall.dri.param.EnableParam;
import com.anyou.mall.dri.vo.DriverDetailsVo;
import com.anyou.mall.dri.vo.DriverOrderNumVo;
import com.anyou.mall.dri.vo.DriverOrderVo;
import com.anyou.mall.scancode.ScanCodeParam;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 司机列表Service接口
 *
 * @author gaochaohao
 * @date 2022-04-02
 */
public interface IDriverService extends IService<Driver>
{
    /**
     * 查询司机列表
     *
     * @param driverId 司机列表主键
     * @return 司机列表
     */
    public Driver selectDriverByDriverId(Long driverId);

    /**
     * 查询司机列表列表
     *
     * @param driver 司机列表
     * @return 司机列表集合
     */
    public List<Driver> selectDriverList(Driver driver);

    /**
     * 新增司机列表
     *
     * @param driver 司机列表
     * @return 结果
     */
    public int insertDriver(Driver driver);

    /**
     * 修改司机列表
     *
     * @param driver 司机列表
     * @return 结果
     */
    public int updateDriver(Driver driver);

    /**
     * 批量删除司机列表
     *
     * @param driverIds 需要删除的司机列表主键集合
     * @return 结果
     */
    public int deleteDriverByDriverIds(Long[] driverIds);

    /**
     * 删除司机列表信息
     *
     * @param driverId 司机列表主键
     * @return 结果
     */
    public int deleteDriverByDriverId(Long driverId);

    /**
     * 修改司机状态
     * @param driverId
     * @return
     */
    ApiResult enableStatus(Long driverId);

    /**
     * 司机详情-配送订单已完成揽件/配送的数量
     * @param driverOrderNumVo
     * @return
     */
    ApiResult driverOrderNum(DriverOrderNumVo driverOrderNumVo);

    /**
     * 司机详情-配送订单列表
     * @param driverOrderVo
     * @return
     */
    List<DriverOrderVo> deliveryOrderPage(DriverOrderVo driverOrderVo);

    /**
     * 获取司机列表详细信息
     * @param driverId
     * @return
     */
    DriverDetailsVo getDriverDetailsByDriverId(Long driverId);

    /**
     * 根据订单号生成二维码的base64字符串
     * @param scanCodeParam
     * @return
     */
    ApiResult<String> createCode(ScanCodeParam scanCodeParam);

    /**
     * 修改启用状态
     * @param param
     */
    void editEnable(EnableParam param);
}
